package com.boken.caelum.common.manager;

import java.util.List;

public interface Manager<M,E> {

	Long countByExample(E example);

	Long deleteByExample(E example);

	Long deleteByPrimaryKey(Object id);

	Long insert(M model);

	Long insertSelective(M model);

	List<M> selectByExample(E example);

	M selectByPrimaryKey(Object id);

	M selectOneByExample(E example);

	Long updateByExampleSelective(M model, E example);

	Long updateByPrimaryKeySelective(M model);

	Long updateByExample(M model, E example);

	Long updateByPrimaryKey(M model);
	/**
	 * 需要在mapper.xml里面对应写 insertAndGetId。可以配置idea 快捷模板生成
	 *
	 * 配置：
	 * File | Settings | Editor | Live Templates
	 *
	 * 新增一个模板
	 * Applicable in Xml
	 *
	 * Abbreviation : getid
	 *
	 * Template text : 内容如下
	 *
	 * <!--新增拿主键ID-->
	 * <insert id="insertAndGetId" keyProperty="主键字段" parameterType="实体包名" useGeneratedKeys="true">
	 *		复制mapper.xml中的insert的sql
	 * </insert>
	 *
	 *使用：：：在相应mapper.xml 输入 getid ,就会有快捷键快速生成这段代码
	 *
	 * @param model
	 * @return
	 */
	M insertAndGetId(M model);

	List<M> selectPageByExample(Integer pageNum, Integer pageSize, E example);
}